package packGestionAgendas;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.Vector;

import packGestionAgendas.packExcepciones.DiaAgendaNoEncontradoException;

public class Agenda {
	private Vector listaDias;

	public Agenda() {
		listaDias = new Vector();
		// Habría que inicializar los días
	}

	public void anadirActividad(Date pFecha, Actividad pActividad)
			throws DiaAgendaNoEncontradoException {
		DiaAgenda diaAgenda = obtDiaAgenda(pFecha);
		diaAgenda.anadirActividad(pActividad);
	}

	public boolean estaLibre(Date pFecha) {
		try {
			DiaAgenda diaAgenda = obtDiaAgenda(pFecha);
			return diaAgenda.estaLibre(pFecha);
		} catch (DiaAgendaNoEncontradoException e) {
			return false;
		}
	}

	private DiaAgenda obtDiaAgenda(Date pFecha)
			throws DiaAgendaNoEncontradoException {
		DiaAgenda diaAgenda = null;

		Calendar aux = new GregorianCalendar();

		Calendar orig = new GregorianCalendar();
		orig.setTime(pFecha);

		boolean encontrado = false;
		Iterator iterador = obtIterator();
		while (!encontrado && iterador.hasNext()) {
			diaAgenda = (DiaAgenda) iterador.next();
			aux.setTime(diaAgenda.obtFecha());

			if ((aux.get(Calendar.DAY_OF_YEAR) == orig
					.get(Calendar.DAY_OF_YEAR)))
				encontrado = true;
		}

		if (encontrado)
			return diaAgenda;
		else
			throw new DiaAgendaNoEncontradoException();

	}

	private Iterator obtIterator() {
		return listaDias.iterator();
	}

}
